package com.company.pangu.aliyun.risk.request;

import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * <p>阿里云视频检测（异步）</p >
 * https://help.aliyun.com/document_detail/70436.html?spm=a2c4g.11186623.6.689.5a234caccCfxOh
 *
 * @author Nikola Tesla
 * @version 1.0
 * @date 2021/4/6
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RiskVideoAsyncScanRequest {

    /**
     * 该字段用于标识您的业务场景。
     */
    private String bizType = "sa";

    /**
     * 是否直播。取值：
     * false（默认）：表示点播视频检测。
     * true：表示直播流检测。
     */
    private boolean live = false;

    /**
     * 指定检测对象，JSON数组中的每个元素是一个检测任务结构体。
     * 最多支持100个元素，即每次提交100条内容进行检测，支持100个元素的前提是需要将并发任务调整到100个以上。
     */
    private List<Task> tasks;

    /**
     * 指定视频检测场景。取值：
     * porn：视频智能鉴黄
     * terrorism：视频暴恐涉政
     * live：视频不良场景
     * logo：视频logo
     * ad：视频图文违规
     */
    private List<String> scenes = Lists.newArrayList("porn", "terrorism");

    /**
     * 指定视频语音检测场景，唯一取值：antispam，表示语音反垃圾。
     * 不传入该参数时仅检测视频图像内容；如果传入该参数，则在检测视频中图像的同时，对视频中语音进行检测。
     */
    private List<String> audioScenes = Lists.newArrayList("antispam");

    /**
     * 任务
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static final class Task {

        /**
         * 视频直播流的ID。(非必填)
         * 该参数用于视频直播任务去重，防止重复检测，如果传递该参数，会根据uid+bizType+liveId判断是否存在检测中的直播任务。如果存在，就直接返回已存在的直播检测taskId，不发起新的任务。
         */
        private String liveId;

        /**
         * 检测对象对应的数据ID。(非必填)
         * 由大小写英文字母、数字、下划线（_）、短划线（-）、英文句号（.）组成，不超过128个字符，可以用于唯一标识您的业务数据。
         */
        private String dataId;

        /**
         * 视频链接(https)
         */
        private String url;

        /**
         * 视频截帧间隔，单位为秒，取值范围：1~600。默认值为1秒。
         */
        private Integer interval;

        /**
         * 系统对本次检测的视频进行截帧的张数上限，取值范围：5~3600，默认为200张。
         */
        private Integer maxFrames;

    }

}
